![]()
![]() ![]() |
|
V etapách analýzy, návrhu a částečně implementace hrají nezaměnitelnou roli nástroje typu CASE (Computer Aided System Engineering). Jsou postaveny tak, aby podporovaly týmovou práci při vývoji systému, zajišťují sdílení rozpracovaných fragmentů, správu vývoje, sledují konzistenci modelu systému, automatizují některé procesy, hlídají dodržování metodiky, atd. Z hlediska celistvosti přístupu k vývoji rozlišujeme tři typy CASE: upper, middle a lower CASE. Upper CASE se využívá pro analýzu systému. Middle CASE zajišťuje etapu návrhu systému a lower CASE etapu implementace. Ne všechny CASE nástroje zahrnují všechny tři typy a ne každý projekt vyžaduje užití všech typů při vývoji. Je-li např. analýza jednoduchého projektu kompletně zpracována v textové podobě a schválena zadavatelem, není nutné používat nákladný upper CASE. Záleží na manažerovi projektu, zda se rozhodne pro použití nástroje, který v sobě zahrnuje všechny tři typy CASE nebo pořídí více nástrojů. Etapy analýzy, návrhu a implementace jsou však úzce svázané. V případě, že se manažer rozhodne pro více nástrojů, je nutné zohlednit, nakolik jsou nástroje integrované, případně jak nákladný je přenos rozpracovaného systému z jednoho nástroje na druhý. Pravděpodobně první informací, kterou se o CASE dozvíme je, zda podporuje strukturované či objektové metodiky. Neexistuje však obecný návod, které metodiky použít. Volba závisí na zkušenostech vývojového týmu, zvoleném implementačním prostředí a na také kvalitě vlastního CASE nástroje. Ačkoliv to bylo dříve vylučováno, ukázalo se, že tyto zcela odlišné přístupy je možné kombinovat. Například je možné provést analýzu za pomoci objektových metodik, datové modelování pomocí strukturované metodiky a pokračovat v návrhu systému objektově (strukturovaný datový model lze interpretovat objektovým diagramem asociace tříd). V současné době však strukturované metodiky ustupují metodikám objektovým. A není to pouze otázka módy. Objektové metodiky pohlížejí na systém jako na celek, umožňují přírůstkovou metodu vývoje, jejich interpretace je snáze srozumitelná zadavateli, nejsou zatíženy problémy postupů topdown nebo bottom-up známými ze strukturovaných metodik (jedná se o problémy správné dekompozice systému v době, kdy ještě není dostatečně znám, problém přidávání dalších komponent systému atd.). Jak tedy vybrat vhodný CASE nástroj? V následujícím textu naleznete základní kritéria výběru. Podporuje CASE integraci s ostatními nástroji potřebnými pro projekt?Před vyslovením této otázky si musíte uvědomit, zda od nástroje požadujete, aby se stal jednou částí technologické linky vývoje projektu. V tomto případě musí existovat návaznosti na ostatní nástroje. Ne každý projekt však právě tohle potřebuje. Příkladem může posloužit nákup stereo zařízení. Buď můžete koupit celou stereo věž nebo vybrat nejlepší komponenty jednotlivě, ovšem bez záruky, že nejlepší CD přehrávač lze přímo spojit s nejlepším zesilovačem a potom je nutné vytvořit nějaký konverzní mechanismus. Abych však nekřivdil CASE, musím podotknout, že existují také nástroje, které patří mezi nejlepší ve své třídě a jsou integrované s dalšími nástroji pro vývoj projektů (od různých výrobců). ![]() Splňuje nástroj požadavky procesu vývoje vašeho systému?V předchozím textu jsem mluvil o etapách vývoje. Jsou však projekty, které mají některé etapy definované jinak, docházejí k jiným cílům. Uvědomte si, že vývoj projektu neznamená podřídit se metodice používaného nástroje, ale vybrat takový nástroj, který používá vámi zvolenou metodiku. Samozřejmě za předpokladu, že metodika projektu je rozumná. Některé CASE nástroje podporují dokonce více metodik najednou. Koexistence metodik v jednom projektu může znamenat urychlení práce či zprůhlednění procesu analýzy nebo návrhu. Tento krok je však nutné důkladně rozmyslet, protože může také znamenat zanesení nekonzistence do projektu. ![]() Jakou notaci nástroj podporuje?Notace a metodika bývá občas spojována. Notace je však pouhá interpretace metodiky a lze říci, že jedna metodika může mít několik notací. Dobrá notace by měla být jednoznačná, přehledná, komplexní. Příkladem může být například notace UML (Unified Modelling Language), která se v současné době stává standardem pro interpretaci objektových metodik. ![]() Lze v rámci vývoje sledovat plnění požadavků specifikace?Mezi požadavky na systém a jejich plněním musí být zcela zřetelný vztah. Jestliže nástroj nedisponuje modulem pro evidenci a analýzu požadavků, měl by být s takovým nástrojem integrován. ![]() Je nástroj modulární?Tahle otázka se spíše týká finanční stránky. Při vývoji nejsou vždy nutné všechny prostředky CASE nástroje. Proč vlastnit např. generátor do SmallTalku, když tento jazyk v projektu nijak nevyužijete. Některé moduly nástroje potřebujete jenom v určitém čase a ne po celou dobu vývoje. V době, kdy provádíte analýzu zřejmě nebudete potřebovat žádný generátor jazyka. Podobně je tomu, když vytváříte pilotní projekt (např. pro účely tendru) a teprve když se práce spustí na plné obrátky (díky dobrému pilotnímu projektu jste tendr vyhráli), dokoupíte další moduly (např. moduly pro verzování či reusing) a můžete pokračovat v práci. Nejlepším řešením, se kterým jsem se setkal, je forma licencí na jednotlivé moduly. Zakoupíte si celý nástroj a sadu časově omezených licencí. Potřebujete-li další modul, není nutné nic instalovat, pouze aktivovat licenci. ![]() Jak silnou má nástroj repository? Je v databázi nebo v souborech?Jádro každého CASE spočívá v repository. Ta musí být dostatečně robustní, aby zvládla velké projekty či mnoho uživatelů najednou (pokud to vyžaduje váš projekt), musí mít dostatečně rychlou odezvu, musí být přenosná mezi platformami (jestliže se projekt vyvíjí na více platformách). Některé CASE mají souborově založenou repository, ale většina databázově. Je důležité, na jaké DB platformě může být repository založena, popř. zda může být založena na více DB platformách. ![]() Je nástroj otevřený a přístupný modifikacím?Tahle otázka je životně důležitá. Neexistuje CASE, který by vyhověl všem projektům a všem nárokům uživatelů. Každý projekt vyžaduje určité úpravy nástrojů. Praxe říká, že mnoho projektů nebylo úspěšně dokončeno, protože vývojové nástroje nebylo možné přizpůsobit potřebám projektu. Je velice výhodné, když CASE disponuje nějakým jazykem, kterým je jej možné upravovat. Ještě lépe, když jsou s nástrojem dodávány zdrojové kódy jeho modulů nebo jeho repository užívá standardní rozhraní (např. OLE2). Potom už není problém vytvořit si například vlastní generátor. Stačí se podívat, jak je udělán generátor jiný. To však také souvisí s předchozí otázkou tedy s repository. Teprve nad dostatečně kvalitní a otevřenou repository lze provádět customizaci. ![]() Jak nástroj podporuje verzování a sdílení komponent?Pokud na projektu pracuje více lidí, je téměř jisté, že budou sdílet jednotlivé komponenty modulu. Jeli projekt rozsáhlejší, je zřejmé, že jedna komponenta může být dále rozvíjena více směry (např. kvůli potřebě různých pohledů na realitu). Je proto nutné komponenty vývoje sdílet a verzovat. Je vhodné, aby verzování bylo jak vertikální, tak horizontální (tedy aby komponenta např. diagram alfa.1 měl další vertikální verzi alfa.2, ale také horizontální verzi alfa.1.1). Tak vzniká určitá síť verzí, která umožňuje kvalitnější práci. ![]() Co správa projektu?Správou projektu mám na mysli především řízení přístupu jednotlivých uživatelů nástroje ke komponentám vyvíjeného systému. Je zřejmé, že analytik má jiná práva než tester. CASE musí být schopen rozlišovat různé role uživatelů. Manažer často potřebuje okamžitě zjistit aktuální stav projektu. Informace o stavu musí být CASE schopen v nějakém přehledném stavu dodat. Pozor, v tuto chvíli nemám na mysli dokumentaci, ale spíše jakousi formu reportů, které podávají jednoznačné a dostačující informace lidem seznámeným s projektem. ![]() Podporuje nástroj kontrolu konzistence, úplnosti a dodržování metodiky?Většina CASE má zajištěnu kontrolu syntaxe, takže zřejmě v diagramu datových toků nedovolí nakreslit datový tok z datového skladu opět přímo do datového skladu. Je ale nutné, aby se prováděla kontrola také mezi diagramy nebo aby se prováděla kontrola metodiky např. zda je pro každý Use Case definován sekvenční digram. Nejlepší CASE nástroje obsahují seznam toho, co všechno se může kontrolovat a uživatel volí z tohoto seznamu. ![]() Jaký je komfort ovládání?Uvědomte si, že nad CASE stráví váš tým mnoho hodin. Cokoliv může usnadnit práci nebo ji urychlit (byť jen o desetinu sekundy) se v celkovém čase zúročí. Sledujte, zda nástroj disponuje kvalitním systémem horkých kláves. Když vytváříte nějakou komponentu diagramu (např. třídu), můžete její název napsat přímo nebo se musíte k témuž proklikat několika dialogovými okny? Jsou možnosti zvětšování a zmenšování diagramů plynulé nebo po skocích? Můžete jednoduše pohybovat částí diagramu? Disponuje editor diagramu funkcí UNDO? ![]() Jaká je možnost sdílení a znovupoužití (reusing) analýzy či návrhu?Některé prvky se v opakují ve více projektech. Bylo by ztrátou času zabývat se jejich návrhem vícekrát, když byly navrženy v předcházejícím projektu. CASE by měl disponovat funkcí jakéhosi klonování, které vytrhne z projektu jeho část a zasadí ji do návrhu projektu jiného. ![]() Vytváří nástroj automaticky dokumentaci? Lze tvorbu ovlivnit?Repository obsahuje velké množství informací, které je nutno rozumně dokumentovat. Jen těžko to lze ručně z reportů projektu. CASE by měl mít možnost generovat dokumentaci, založenou na určitých pravidlech. Kvalitní CASE mají možnost dopředu specifikovat, co má být v dokumentaci obsaženo, takže lze vytvářet různou dokumentaci např. pro manažery a pro testery. ![]() Generuje nástroj datový model? Pro jaké databáze?Pokud má CASE možnost datového modelování, může také generovat datový model. Generuje jej také pro DB platformu, na které bude postaven váš systém? Popřípadě, generuje jej do obecného sql jazyka, aby mohl být vytvořen na různých DB platformách? ![]() Generuje nástroj kód aplikační logiky? Pro jaké jazyky? Používá nástroj šablony generování?Lower CASE disponují generátory jazyka. Je běžné, že ve vícevrstvé architektuře je každá vrstva implementována v jiném jazyce. CASE by měl disponovat nejen všemi požadovanými jazyky, ale měli byste také zjistit, zda se jedná o správný dialekt jazyka a zda lze generátor přizpůsobit standardům projektu. Velmi důležité je vědět, zda použití více jazyků nad jedním návrhem skutečně znamená pouhé přidání implementačních detailů do návrhu nebo zda se musí návrh rozdělovat do subsystémů dle zvoleného jazyka. CASE by měl zajistit např. kompatibilitu datových typů mezi různými jazyky, aby při generování vícevrstvé aplikace v různých jazycích nedošlo k jejich nekompatibilitě. ![]() Disponuje nástroj možností round trip engineeringu?Round trip engineering umožňuje provádět změny ve vygenerovaném kódu, aniž by se narušila vazba mezi vygenerovaným kódem a návrhem systému. Jestliže programátor provede změnu v kódu (např. přidá ve třídě další metodu), zanese se tato změna automaticky do diagramu, kde je tato třída modelována. ![]() Disponuje nástroj možností reverse engineeringu?Reverse engineering je možnost, jak zahrnout do analýzy či návrhu systému již hotový zdrojový kód. Ten se procesem reverse engineeringu transformuje do diagramů. Celé diagramy nebo jejich části lze potom považovat za součást návrhu systému. Takhle lze "vykrádat" již hotové grafické knihovny či části jiných systémů a šetří se čas. Vyjmenoval jsem základní technická kritéria výběru CASE nástroje. Je samozřejmé, že vedle těchto kritérií leží další, jako cena nástroje, možnost školení, technická podpora, reference na nástroj atd. Mnoho také napoví fakt, že distributor tohoto nástroje jej sám používá. Nejdůležitější a nejtěžší otázka však zbývá nakonec. Zvýší nástroj produktivitu vaší práce? Je jasné, že na tuhle otázku lze zodpovědně odpovědět teprve po dostatečně dlouhé době, přestože zodpovězení předchozích otázek asi leccos napoví. CASE nástroj ovšem většinou není záležitost několika tisíc korun. To by si měli distributoři uvědomovat. Žádejte proto od nich dostatečně funkční demoverze (nebo ještě lépe časově omezené plné verze), nechávejte se inspirovat projekty, které s tímto nástrojem pracují. Rozhodneteli se pro použití CASE nástroje, vybírejte obezřetně. Není nic horšího, než zjištění v polovině projektu, že jste narazili na strop možností tohoto nástroje. Vždy je lepší investovat více času a financí do výběru, než později obrovské úsilí a peníze do přechodu na jiný nástroj. Petr Kopřiva, kopriva@komix.cz |
|